package File;


import java.io.File;
import java.util.HashMap;
import java.util.Map;

/**
 * - 案例需求
 *
 *   统计一个文件夹中每种文件的个数并打印
 *
 *   打印格式如下：
 *
 *     			txt:3个
 *
 *     			doc:4个
 *
 *     			jpg:6个
 *
 *    			 …
 *
 * - 实现步骤
 *
 *   - 定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹
 *   - 遍历File对象,获取它下边的每一个文件和文件夹对象
 *   - 判断当前File对象是文件还是文件夹
 *   - 如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过
 *     - 没出现过,将这种类型文件的后缀名存入集合中,次数存1
 *     - 出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中
 *   - 如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象
 */
public class FileTest05 {
    public static void main(String[] args) {
        File file = new File("E:\\WanXi\\static\\canyin02-20230213");
        HashMap<String, Integer> hashMap = new HashMap<>();
        count(hashMap,file);
        System.out.println(hashMap);
    }

    public static void count(HashMap<String,Integer> hashMap,File f) {
        File[] listFiles = f.listFiles();
        for (File file:listFiles) {
            if (file.isFile()) {
                String fileName = file.getName();
                String[] split = fileName.split("\\.");
                if (split.length == 2) {
                    String endName = split[1];
                    System.out.println(split[0]+"."+split[1]);
                    if (hashMap.containsKey(endName)) {
                        Integer count = hashMap.get(endName);
                        count++;
                        hashMap.put(endName, count);
                    }else {
                        hashMap.put(endName, 1);
                    }
                }
            }else {
                count(hashMap,file);
            }
        }
    }
}
